Články

Navigačný panel

C++ a OpenGL v QT Creator

V tomto článku si ukážeme ako nainštalovať a nastaviť pod Linuxom GLUT pre OpenGL, a ako s ním pracovať v QT Creator pomocou C++.



Najskôr musíme glut nainštalovať:

apt install freeglut*

V QT Creator vytvoríme nový projekt ako konzolovú C++ aplikáciu a do súboru nazov_projektu.pro pridáme:

QT += core \
opengl
LIBS += -lglut

Do main.cpp pridáme:

#include "GL/glut.h"

Hlavná funkcia main v main.cpp je stručná. Vložíme veci na inicializáciu okna v ktorom budeme vykreslovať pomocou OpenGL.

int main(int argc, char *argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA|GLUT_SINGLE); //nastavenie okna
glutInitWindowSize(700, 500); //velkost okna
glutInitWindowPosition(100, 100); //pozicia kde sa okno otvori
glutCreateWindow("OpenGL test"); //nazov okna
glutDisplayFunc(onDisplay); //nadefinovanie cez parameter funkciu, ktora sa spusti pri spusteni
glutReshapeFunc(onResize); //nadefinovanie funkcie, ktora sa spusti pri zmene velkosti okna
glutKeyboardFunc(onKeyboard); //nadefinovanie funkcie, ktora sa spusti ked stlacime nejaku klavesu
glutMainLoop(); //aby nam aplikacia hned neskoncila
return 0;
}

Nadefinovanie funkcií ktoré sme použili v parametroch vo funkcii main. Deklarácia týchto funkcií musí byť v súbore nad deklaráciou main.

int x(100),y(100);

void onResize(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, w, 0, h, -1, 1);
}


void onKeyboard(unsigned char key, int p_x, int p_y)
{
glClear(GL_COLOR_BUFFER_BIT);
glFlush(); //zmaze vsetko co je vykresnele

if (key == 'a') x = x - 10; //pomocou 'a' a 'd' klavesy mozeme menit velkost trojuholnika
else if (key == 'd') x = x + 10;

glColor3b(100,100,100); //nastavenie farby vsetkeho co sa vykresli

glBegin(GL_TRIANGLE_STRIP); //zaciatok vykreslovania jedneho aspon trojuholnika
glVertex2f(10,400+x); //zadavanie bodov trojuholnika
glVertex2f(10,50);
glVertex2f(400+x,50);
glVertex2f(10,50);
glEnd(); //koniec zadavania bodov

glutSwapBuffers(); //daj na obrazovku
}


void onDisplay()
{
onKeyboard('d', 0,0); //kod ktory sa spusti pri spusteni aplikacie
}

Spustíme kompiláciu a malo by to všetko ísť.


Príspevok pridaný dňa: 24.06.2017 od užívatela: Dodoslav.
Zanechat komentár:

Nick:

Správa: